﻿package test;

import java.util.LinkedList;

import html.shortText;
import lib.dbTool.*;
import test.*;
import my.item.*;
import my.gridView.*;

public class ScoreTableBean extends GridModel {

	public ScoreTableBean() {
		super(new DefaultJNumberList());
	}

	// ---------------------------------
	private String idscore;

	public String getIdscore() {
		return idscore;
	}

	public void setIdscore(String idscore) {
		this.idscore = idscore;
	}

	// ---------------------------------
	private String idstudent;

	public String getIdstudent() {
		return idstudent;
	}

	public void setIdstudent(String idstudent) {
		this.idstudent = idstudent;
	}

	// ---------------------------------
	private String classname;

	public String getClassname() {
		return classname;
	}

	public void setClassname(String classname) {
		this.classname = classname;
	}

	// ---------------------------------
	private String score;

	public String getScore() {
		return score;
	}

	public void setScore(String score) {
		this.score = score;
	}

	// ---------------------------------
	// ---------------------------------
	private String idstudentAdd;

	public String getIdstudentAdd() {
		return idstudentAdd;
	}

	public void setIdstudentAdd(String idstudentAdd) {
		this.idstudentAdd = idstudentAdd;
	}

	// ---------------------------------
	private String classnameAdd;

	public String getClassnameAdd() {
		return classnameAdd;
	}

	public void setClassnameAdd(String classnameAdd) {
		this.classnameAdd = classnameAdd;
	}

	// ---------------------------------
	private String scoreAdd;

	public String getScoreAdd() {
		return scoreAdd;
	}

	public void setScoreAdd(String scoreAdd) {
		this.scoreAdd = scoreAdd;
	}

	// ---------------------------------

	/**
	 * 自訂事件
	 */
	@Override
	public void jaddListener() {
		// 指定PK
		this.idscore = pk;
		// 新增一筆資料利用 【自訂事件】
		// this.addJMyListener(new JMyListener() {
		//
		// @Override
		// public String getMyCommandValue() {
		// return "add";
		// }
		//
		// @Override
		// public void action(GridModel gridModel) {
		// jAdd();
		// }
		// });
	}

	@Override
	public void jedit() {

	}

	@Override
	public void jdel() {
		SCORE x = new SCORE();
		int int_idscore = Integer.parseInt(pk);
		int idscoreInt = Integer.parseInt(idscore);
		int row = x.delete(idscoreInt);
	}

	@Override
	public void jyes() {
		SCORE x = new SCORE();
		int int_idscore = Integer.parseInt(pk);
		int idstudentInt = Integer.parseInt(idstudent);
		int scoreInt = Integer.parseInt(score);
		int idscoreInt = Integer.parseInt(idscore);
		int row = x.update(idstudentInt, classname, scoreInt, idscoreInt);
	}

	@Override
	public void jno() {

	}

	@Override
	public void jadd() {
		SCORE x = new SCORE();
		int idstudentAddInt = Integer.parseInt(idstudentAdd);
		int scoreAddInt = Integer.parseInt(scoreAdd);
		int row = x.insert(idstudentAddInt, classnameAdd, scoreAddInt);
		System.out.println("新增結果 = " + row);
		// 新增一筆後, 要重新計算頁數, 然後再指定到最後一頁
		totalPage();
		this.toPage = this.totalPage;
	}

	@Override
	public void sortData(String fieldName, int sortNowValue) {
		// TODO Auto-generated method stub

	}

	/**
	 * 找出共有幾頁
	 */
	@Override
	public void totalPage() {
		// TODO Auto-generated method stub
		SCORE x = new SCORE();
		rowCount = x.selectCount();
		totalPage = rowCount / pageSize;
		totalPage += rowCount % pageSize == 0 ? 0 : 1;
	}

	/**
	 * select 分頁出來的內容
	 */
	@Override
	public TableData selectPage(int pageSize, int pageIndex) {
		// TODO Auto-generated method stub
		SCORE x = new SCORE();
		// ------------新增
		if (pageIndex <= 0) {
			pageIndex = 1;
		}

		// this.sortNowName : 我按到哪一欄位
		// this.sortNowValue : 排序方向
		// 0=不排序, 1=正向, 2=反向

		String db[][] = null;
		String sortName;
		int desc;

		// 以下處理排序問題
		sortName = this.sortNowName;
		if (this.sortNowValue == 0) {
			db = x.selectPage(pageSize, pageIndex, rowCount);
		} else {
			if (this.sortNowValue == 1) {
				desc = PaggingSQL.ASC;
			} else {
				desc = PaggingSQL.DESC;
			}
			db = x.selectPageOrderBy(pageSize, pageIndex, sortName, desc,
					rowCount);
		}
		// ------------新增
		TableData t = new TableData();
		// keyIndex 要自己根據 db 來決定
		int keyIndex = 0;
		// fake 為 db select 出來的 String[][]
		t.setData(keyIndex, db);
		return t;
	}

	/**
	 * 非編輯模式的資料
	 */
	@Override
	public Cell[] loadLabel(TableData t, TempCell tc) {
		// TODO Auto-generated method stub
		String datas[][] = t.getDatas();
		// 表示select db 出來的欄位數量
		int colSize = 4;
		Cell tmpCell[] = new Cell[colSize];
		// 第一欄預設為 [CLabel], 若修改為其它的 class 請參考 [CLabel], showYesNo() = false
		// getValue() 要傳回值[純PK],不可有<input>,第一欄一定為 PK
		// 若不想 show 出來, getHtmlItem()可以在control.jsp 中刪除
		tmpCell[0] = new CLabel("idscore");
		tmpCell[1] = new CLabel("idstudent");
		tmpCell[2] = new CLabel("classname");
		tmpCell[3] = new CLabel("score");

		tc.loadCell(tmpCell, datas);
		return tmpCell;
	}

	/**
	 * 進入編輯模式的資料
	 */
	@Override
	public Cell[] loadItem(TableData t, TempCell tc) {
		// TODO Auto-generated method stub
		String datas[][] = t.getDatas();
		int colSize = 4;
		Cell tmpCell[] = new Cell[colSize];
		// 第一欄預設為 [CLabelForUpdate][CLabelHidden], 若修改為其它的 class 請參考
		// [CLabelForUpdate][CLabelHidden]
		// , showYesNo() = true, getValue() 要傳回值[純PK],不可有<input>, 第一欄一定為 PK
		// 若不想 show 出來, getHtmlItem()可以在control.jsp 中刪除
		tmpCell[0] = new CLabelForUpdate("idscore");
		//2013-12-31-自訂的shortText
		tmpCell[1] = new shortText("idstudent");
		//下拉選單,CDrop下拉選單,要實作IDropListData()
		tmpCell[2] = new CDropList("classname",new IDropListData() {
			LinkedList<String> list = new LinkedList<String>();
			
			{
				list.add("國文");
				list.add("英文");
				list.add("數學");
			}
			
			@Override
			public LinkedList<String> loadName() {
				// TODO 自動產生的方法 Stub
				return list;
			}
			
			@Override
			public LinkedList<String> loadData() {
				// TODO 自動產生的方法 Stub
				// 這個才會回傳整個表單選項
				return list;
			}
		});
		//自訂自己的控制項
		
		tmpCell[3] = new CRadio("score", new IRadioData() {
			LinkedList<String> list = new LinkedList<String>();
			
			{
				list.add("90");
				list.add("80");
				list.add("70");
			}			
			@Override
			public LinkedList<String> loadName() {
				// TODO 自動產生的方法 Stub
				return list;
			}
			
			@Override
			public LinkedList<String> loadData() {
				// TODO 自動產生的方法 Stub
				return list;
			}
		});

		tc.loadCell(tmpCell, datas);
		return tmpCell;
	}

}
